<template>
  <!-- 组件的结构。其中template标签是不参与结构编译的 -->
  <div class="demo">
    <h1 v-text="school.msg" ref="title"></h1>
    <button @click="showDOM()">点我输出上方的DOM元素</button>
    <h2>学校名称：{{ school.name }}</h2>
    <h2>学校地址：{{ school.address }}</h2>
    <button @click="showName">点我提示学校名称</button>
  </div>
</template>

<script>
// 组件交互相关的代码（数据、方法等等）。

// // 暴漏方式一：分别暴露
// export const school = Vue.extend({
//   data() {
//     return {
//       school: {
//         name: '尚硅谷',
//         address: '北京市昌平区宏福科技园',
//       }
//     }
//   },
//   methods: {
//     showName() {
//       alert(this.school.name);
//     }
//   }
// });


// const school = Vue.extend({
//   data() {
//     return {
//       school: {
//         name: '尚硅谷',
//         address: '北京市昌平区宏福科技园',
//       }
//     }
//   },
//   methods: {
//     showName() {
//       alert(this.school.name);
//     }
//   }
// });
// 暴漏方式二：统一暴露
// export {school};


// 暴露方式三：默认暴露
// export default {school};
// 如果是暴露出一个对象的话，就直接省略花括号{}
// export default school;


// 直接使用默认暴露的话，可以省略 school 变量定义
// export default Vue.extend({
//   data() {
//     return {
//       school: {
//         name: '尚硅谷',
//         address: '北京市昌平区宏福科技园',
//       }
//     }
//   },
//   methods: {
//     showName() {
//       alert(this.school.name);
//     }
//   }
// });

// 其中可以省略Vue.extend()
export default {
  name: 'School', // 定义默认的组件名称，最好和组件的名称保持一致性
  data() {
    return {
      school: {
        msg: '欢迎学习Vue',
        name: '尚硅谷',
        address: '北京市昌平区宏福科技园',
      }
    }
  },
  methods: {
    showName() {
      alert(this.school.name);
    },
    showDOM() {
      console.log('@查看vc【VueComponent身上的$ref】', this);
      console.log(this.$refs.title);
    }
  }
};
</script>

<style scoped>
/* 组件的样式 */
.demo {
  background: orange;
}
</style>


